Skip to content

Fix Lenovo UEFI boot loops in Redfish boot interface - #14

Closed
nvduarte77 wants to merge 1 commit into
openstack:masterfrom
nvduarte77:fix-redfish-lenovo-uefi-disk-boot-loop
Closed

Fix Lenovo UEFI boot loops in Redfish boot interface#14
nvduarte77 wants to merge 1 commit into
openstack:masterfrom
nvduarte77:fix-redfish-lenovo-uefi-disk-boot-loop

Conversation

@nvduarte77

Copy link
Copy Markdown

Summary

  • Skip setting the disk boot device on Lenovo UEFI nodes in the Redfish boot interface during deployment, matching the existing PXE and agent deploy behavior for bug #2053064
  • Route the agent deploy manage_agent_boot=False path through set_boot_to_disk() so force_persistent_boot_device is honored

Problem

After RHCOS deployment, Ironic sets BootSourceOverrideTarget=Hdd with BootSourceOverrideEnabled=Continuous via Redfish. On some Lenovo UEFI firmware (e.g. SR645 V3 with older XCC), Hdd maps to the generic Hard Disk UEFI entry instead of the OS shim bootloader, causing infinite boot loops.

The PXE and agent deploy paths already skip setting disk boot on Lenovo UEFI nodes, but the Redfish boot interface did not — which is the path used by OpenShift/Metal3 Redfish provisioning.

Test plan

  • RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_lenovo_uefi
  • RedfishHTTPBootTestCase.test_prepare_instance_local_boot_lenovo_uefi
  • TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot

After deployment, the Redfish virtual media and HTTPS boot interfaces
still set BootSourceOverrideTarget to Hdd on Lenovo UEFI nodes. On some
firmware this maps to a generic Hard Disk UEFI entry instead of the OS
shim, causing infinite boot loops.

Skip setting the disk boot device on Lenovo UEFI nodes during deployment,
matching the existing PXE and agent deploy behavior. Also route the
manage_agent_boot=False path through set_boot_to_disk() so
force_persistent_boot_device is honored.
@nvduarte77
nvduarte77 marked this pull request as draft June 25, 2026 01:02
@openstackadmin

Copy link
Copy Markdown
Member

Thank you for your contribution!

This GitHub repository is just a mirror of https://opendev.org/openstack/ironic, where development really happens. Pull requests proposed on GitHub are automatically closed.

If you are interested in pushing this code upstream, please note that OpenStack development uses Gerrit for change proposal and code review.

If you have never contributed to OpenStack before, please see:
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html

Feel free to reach out to the First Contact SIG by sending an email to the openstack-discuss list with the tag '[First Contact]' in the subject line. To email the mailing list, you must first subscribe which can be done here:
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants